package day01;

public class ZhuanHuanDemo {
    public static void main(String[] args) {
        //两种转换方式：自动类型转换/隐式类型转换：从小类型到大类型。强制类型转换：从大类型到小类型。
        //谁打谁小？基本数据类型由小到大依次为：byte->short->int->long->float->double
        //                                             ^
        //                                       char--|

        /*
        int a = 5;
        long b = a;//自动类型转换
       //int c = b;//编译错误，大到小必须强制类型转换。
        //语法：（要转换成为的数据类型）变量
        int c = (int)b;//强制类型转换
         */

        /*
        //自动类型转换特殊情况。两种特殊情况：
        long d = 5;//自动类型转换
        double e = 5;//自动类型转换
        System.out.println(e);//5.0 默认保留一位小数
        //强制类型转换特殊情况。两种特殊情况：
        long f = 10000000000L;
        int g = (int) f;
        System.out.println(g);//溢出了，强转有可能发生溢出

        double h = 25.987;
        int i = (int) h;
        System.out.println(i);//25，强转有可能丢失精度
         */

        /*
        //两点规则：
        //1.整数直接量可以直接赋值给byte、short、char，但不能超出范围
        byte b1 = 5;//5为整数直接量
        byte b2 = 6;//6为整数直接量
        //byte b3 = 800;//编译错误，800超出了byte范围。
        //2.byte、short、char型数据参与运算时,先一律自动转换为int再运算。
        byte b4 = 5;
        byte b5 = 6;
        //byte b6 = b4+b5;//编译错误
        //byte b6 = (byte)b4+b5;//编译错误，强转优先级高，先做强转。
        byte b6 = (byte)(b4+b5);
        System.out.println(b6);
         */

        /*
        System.out.println(2+2);     //4
        System.out.println(2+'2');   //52     2，加上'2'的码值50
        System.out.println('2'+'2'); //100    '2'的码值50，加上'2'的码值50
        System.out.println('2');     //2
        System.out.println('我'+'爱'+'你');//45425

        int m = '爱';
        System.out.println(m);//97  查看字符对应的码值

        char n = 97;
        System.out.println(n);//a   查看码值对应的字符
         */
    }
}
